package com.qingmeng.applyjob.portal.service;

import com.qingmeng.applyjob.model.User;
import com.qingmeng.applyjob.portal.enums.RegisterResult;
import com.qingmeng.applyjob.portal.model.dto.UserRegisterParam;
import com.qingmeng.applyjob.portal.model.vo.UserVo;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Map;

public interface UserService {
    /**
     * 根据用户名查询用户信息
     *
     * @param username 用户名
     * @return User对象
     */
    User getUserByUsername(String username);

    /**
     * 根据用户名获取用户信息
     * 该函数 SpringSecurity 框架需要使用
     *
     * @param userName 用户名,
     * @return UserDetails 对象
     */
    UserDetails loadUserByUsername(String userName);

    /**
     * 用户注册
     *
     * @param param 用户注册的时候前端传递过来的参数
     * @return 注册结果
     */
    RegisterResult register(UserRegisterParam param);

    /**
     * 用户登陆
     *
     * @param username 用户名
     * @param password 密码
     * @return 登陆成功之后返回的数据
     */
    Map<String, String> login(String username, String password);

    /**
     * 获取个人信息
     * @return
     */
    UserVo getPersonal();

}
